Apparatus and method of controlling multi-input-single-output systems

ABSTRACT

An apparatus and method is disclosed for automatically controlling multi-input-single-output (MISO) systems or processes. The control output signal of a single-input-single-output (SISO) automatic controller is converted by a reverse, sequential or combined split-range setter into a plurality of ranges of signals so that the SISO controller is converted to a single-input-multi-output (SIMO) automatic controller based on certain criteria; and the resulting controller output signals are able to manipulate a plurality of actuators to control one continuous process variable in different operating conditions. Without the need of building process mathematical models, this inventive apparatus and method is useful for automatically controlling unevenly paired multivariable systems or processes where there are more system inputs than outputs including but not limited to pH processes, chemical reactors, and air handling units.

The invention relates to automatic control of multi-input-single-output (MISO) systems including industrial processes, equipment, facilities, buildings, homes, devices, engines, robots, vehicles, aircraft, space-vehicles, appliances and other systems, and more particularly to a method and apparatus for automatically controlling a continuous process variable by manipulating one or more actuators individually or simultaneously. The control system is able to force the controlled process variable to track its setpoint under significant system dynamic changes due to batch, load, production, configuration, season, time of the day, or operating conditions, and under large disturbances originating from product flow, plant upsets, weather, wear and tear of sensors, actuators, or other components.

Multi-input-single-output (MISO) systems are commonly found in situations where 2 or more opposite control actions are used in order to control the process variable in different operating conditions. In these cases, two or more actuators are used to bring in the opposite control actions. For instance,

-   -   In a wastewater treatment process, acid or caustic is added to         control the pH value and keep it near its neutrality by using 2         actuators, namely an acid control valve and a caustic control         valve;     -   A chemical reactor where steam is used to raise the reactor         temperature during its startup stage and cooling water is used         to suppress the reactor temperature and keep it within its         safety range during the reaction stage when heat is generated         due to exothermal chemical reaction.     -   An air handling unit (AHU) in a building control system where a         heating valve manipulates the warm water flow, a cooling valve         manipulates the chilled water flow, and a damper manipulates the         fresh outside air flow. Depending on the temperature setpoint         and inside and outside environment, the supply air temperature         can be controlled by using one or more actuators.

In these applications, control actions cancel each other. To avoid the fighting among multiple control actions, we may apply “reverse split-range control” where one actuator is working and the others are shut off or remain in fixed positions.

There are multi-input-single-output (MISO) systems where the scale of the control action is so large during certain operating conditions that more actuators are used. For instance,

-   -   both a coarse valve and a fine valve may be used to dose acid         for pH control. When near neutrality, a very small dose of acid         can cause the pH to change. The use of one valve may not cover         the wide range needed for effective acid flow control.     -   a chemical reactor where a large cooling water valve may be         installed working in parallel with a regular size cooling water         valve. In case the regular cooling water stream is insufficient         to control the reactor temperature, a sufficient amount of         cooling water can be brought into the system to suppress the         reactor temperature to prevent a runaway situation.

In these applications, where the control actions compliment each other, we may apply “sequential split-range control” where multiple actuators are brought into action gradually depending on the operating conditions.

Since the input-output relationship between each actuator and the controlled process variable can be considered a sub-system with its own dynamics, using one controller with fixed tuning parameters cannot handle the significant dynamic changes when switching between these sub-systems. Thus, MISO systems are difficult to control resulting in low production efficiency, poor product quality, and high energy consumption. In addition, frequent manual tuning of the controller parameters causes high maintenance cost.

In the accompanying drawing:

FIG. 1 is a block diagram illustrating a 1-input-2-output (1×2) model-free adaptive (MFA) controller that controls a 2-input-1-output (2×1) system.

FIG. 2 is a block diagram illustrating the architecture of a 1-input-2-output (1×2) model-free adaptive (MFA) controller.

FIG. 3 is a drawing illustrating a mechanism of a reverse split-range setter that can easily split a controller signal into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither.

FIG. 4 is a drawing illustrating a mechanism of a reverse split-range setter that is an alternative design to split a controller signal into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither.

FIG. 5 is a drawing illustrating a mechanism of a sequential split-range setter that can easily convert a controller signal into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither.

FIG. 6 is a drawing illustrating a mechanism of a sequential split-range setter that is an alternative design to convert a controller signal into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither.

FIG. 7 is a block diagram illustrating a 1-input-3-output (1×3) model-free adaptive (MFA) controller that controls a 3-input-1-output (3×1) system.

FIG. 8 is a block diagram illustrating the architecture of a 1-input-3-output (1×3) model-free adaptive (MFA) controller.

FIG. 9 is a drawing illustrating a mechanism of a reverse split-range setter that can easily split a single controller output into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or not at all.

FIG. 10 is a drawing illustrating a mechanism of a reverse split-range setter that is an alternative design to split a single controller output into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or not at all.

FIG. 11 is a drawing illustrating a mechanism of a sequential split-range setter that can convert a single controller output into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or not at all.

FIG. 12 is a drawing illustrating a mechanism or a sequential split-range setter that is an alternative design to convert a single controller output into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or not at all.

FIG. 13 is a block diagram illustrating a 1-input-M-output (1×M) model-free adaptive (MFA) controller that controls an M-input-1-output (M×1) system.

FIG. 14 is a block diagram illustrating the architecture of a 1-input-M-output (1×M) model-free adaptive (MFA) controller.

FIG. 15 is a block diagram illustrating a 1-input-2-output (1×2) proportional-integral-derivative (PID) controller that controls a 2-input-1-output (2×1) system.

FIG. 16 is a block diagram illustrating a 1-input-M-output (1×M) proportional-integral-derivative (PID) controller that controls an M-input-1-output (M×1) system.

FIG. 17 is a block diagram illustrating a single-input-multi-output (SIMO) controller that controls a multi-input-single-output (MISO) system.

FIG. 18 is a drawing illustrating a mechanism of a reverse split-range setter that can easily split a single controller output into M or more ranges to manipulate M different actuators individually, simultaneously, or not at all.

FIG. 19 is a drawing illustrating a mechanism of a sequential split-range setter that can convert a single controller output into M or more ranges to manipulate M different actuators individually, simultaneously, or not at all.

FIG. 20 is a block diagram illustrating a single-input-multi-output (SIMO) controller that controls a multi-input-single-output (MISO) system, where a combined split-range setter is used.

The term “mechanism” is used herein to represent hardware, software, or any combination thereof. The term “process” is used herein to represent a physical system or process with inputs and outputs that have dynamic relationships.

Description

A. 1-input-2-Output Model-Free Adaptive (MFA) Controller

FIG. 1 illustrates a 1-input-2-output (1×2) MFA controller that controls a 2-input-1-output (2×1) system. The control system consists of a 1-input-2-output (1×2) MFA controller 10, a 2-input-1-output (2×1) system 12, actuator A₁ 6, actuator A₂ 8, and signal adders, 14, 16. The signals shown in FIG. 1 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t).

x(t)—System Output.

V₁(t)—Controller Output 1 to manipulate Actuator A₁.

V₂(t)—Controller Output 2 to manipulate Actuator A₂.

d(t)—Disturbance, the disturbance caused by noise or load changes.

e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)−y(t).

The control objective is for the controller to produce outputs V₁(t) and V₂(t) to manipulate actuators A₁ and A₂ so that the measured variable y(t) tracks the given trajectory of its setpoint r(t) under variations of setpoint, disturbance, and process dynamics. In other words, the task of the MFA controller is to minimize the error e(t) in an online fashion.

We select the objective function for the MFA control system as

$\begin{matrix} {{E_{S}(t)} = {{\frac{1}{2}{e(t)}^{2}}\mspace{56mu} = {{\frac{1}{2}\left\lbrack {{r(t)} - {y(t)}} \right\rbrack}^{2}.}}} & (1) \end{matrix}$

The minimization of E_(s)(t) is achieved by (i) the regulatory control capability of the MFA controller whose outputs V₁(t) and V₂(t) manipulate the manipulated variables forcing the process variable y(t) to track its setpoint r(t); and (ii) the adjustment of the MFA controller weighting factors that allow the controller to deal with the dynamic changes, large disturbances, and other uncertainties of the control system.

FIG. 2 illustrates the architecture of a 1-input-2-output model-free adaptive (MFA) controller. A linear multilayer neural network 18 is used in the design of the controller. The neural network has one input layer 20, one hidden layer 22 with N neurons, and one output layer 24 with one neuron.

The input signal e(t) to the input layer 20 is first converted to a normalized error signal E₁ with a range of −1 to 1 by using the normalization unit 26, where N(·) denotes a normalization function. The output of the normalization unit 26 is then scaled by a scaling function L_(x)(·) 25:

$\begin{matrix} {{L_{x}( \cdot )} = {\frac{K_{cx}}{T_{cx}}.}} & (2) \end{matrix}$ The value of E₁ at time t is computed with function L_(x)(·) and N(·):

$\begin{matrix} {{E_{1} = {\frac{K_{cx}}{T_{cx}}{N\left( {e(t)} \right)}}},} & (3) \end{matrix}$ where K_(cx)>0 is defined as controller gain and T_(cx) is the user selected process time constant. K_(cx) is used to compensate for the process steady-state gain and T_(cx) provides information for the dynamic behavior of the process. When the error signal is scaled with these parameters, the controller's behavior can be manipulated by adjusting the parameters.

The E₁ signal then goes iteratively through a series of delay units 28, where z⁻¹ denotes the unit delay operator. A set of normalized and scaled error signals E₂ to E_(N) is then generated. In this way, a continuous signal e(t) is converted to a series of discrete signals, which are used as the inputs to the neural network. These delayed error signals E_(i), i=1, . . . N, are then conveyed to the hidden layer through the neural network connections. This is equivalent to adding a feedback structure to the neural network. Then the regular static multilayer neural network becomes a dynamic neural network.

A model-free adaptive controller uses a dynamic block such as a dynamic neural network. A dynamic block is just another name for a dynamic system, whose inputs and outputs have dynamic relationships.

Each input signal can be conveyed separately to each of the neurons in the hidden layer 22 via a path weighted by an individual weighting factor w_(ij), where i=1,2, . . . N, and j=1,2, . . . N. The inputs to each of the neurons in the hidden layer are summed by adder 30 to produce signal p_(j). Then the signal p_(j) is filtered by an activation function 32 to produce q_(j), where j denotes the jth neuron in the hidden layer.

A piecewise continuous linear function ƒ(x) mapping real numbers to [0,1] is used as the activation function in the neural network as defined by

$\begin{matrix} \begin{matrix} {{{f(x)} = 0},} & {\mspace{56mu}{{{if}\mspace{14mu} x} < {- \frac{b}{a}}}} \end{matrix} & \left( {4a} \right) \\ \begin{matrix} {{{f(x)} = {{ax} + b}},} & {{{if} - \frac{b}{a}} \leq x \leq \frac{b}{a}} \end{matrix} & \left( {4b} \right) \\ \begin{matrix} {{{f(x)} = 1},} & {\mspace{56mu}{{{if}\mspace{14mu} x} > \frac{b}{a}}} \end{matrix} & \left( {4c} \right) \end{matrix}$ where a is an arbitrary constant and b=½.

Each output signal from the hidden layer is conveyed to the single neuron in the output layer 24 via a path weighted by an individual weighting factor h_(j), where j=1,2, . . . N. These signals are summed in adder 34 to produce signal z(·), and then filtered by activation function 36 to produce the output o(·) of the neural network 18 with a range of 0 to 1.

A de-normalization function 38 defined by D(x)=100x,  (5) maps the o(·) signal back into the real space to produce the controller signal u(t).

The algorithm governing the input-output of the controller consists of the following difference equations:

$\begin{matrix} {{{p_{j}(n)} = {\sum\limits_{i = 1}^{N}{{w_{ij}(n)}{E_{i}(n)}}}},} & (6) \\ {{{q_{j}(n)} = {f\left( {p_{j}(n)} \right)}},} & (7) \\ \begin{matrix} {{{o(n)} = {f\left( {\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}} \right)}},} \\ {{= {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b}},} \end{matrix} & (8) \end{matrix}$ where the variable of function ƒ(·) is in the range specified in Equation (4b), and o(n) is bounded by the limits specified in Equations (4a) and (4c). The controller signal u(t) becomes

$\begin{matrix} \begin{matrix} {{u(t)} = {{{K_{cx}( \cdot )}{e(t)}} + {D\left( {o(t)} \right)}}} \\ {{= {{{K_{cx}( \cdot )}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} \end{matrix} & (9) \end{matrix}$ where n denotes the nth iteration; o(t) is the continuous function of o(n); D(·) is the de-normalization function; and K_(cx)(·)>0, the controller gain 42, is a variable used to adjust the magnitude of the controller. This is the same variable as in the scaling function L_(x)(·) 25 and is useful to fine tune the controller performance or keep the system stable. The controller signal u(t) then goes into a split-range setter R(·) 44 to produce the controller outputs V₁(t) and V₂(t).

An online learning algorithm as described in the U.S. Pat. No. 6,556,980 B1 is an example of one algorithm that can be used to continuously update the values of the weighting factors of the MFA controller as follows: Δw _(ij)(n)=a ² ηe(n)E ₁(n)h _(j)(n),  (10) Δh _(j)(n)=aηe(n)q _(j)(n).  (11)

The equations (1) through (11) work for both process direct-acting or reverse acting types. Direct-acting means that an increase in the process input will cause its output to increase, and vice versa. Reverse-acting means that an increase in the process input will cause its output to decrease, and vice versa. To keep the above equations working for both direct and reverse acting cases, e(t) is calculated differently based on the acting type of the process as follows: e(t)=r(t)−y(t), if direct acting  (12a) e(t)=−[r(t)−y(t)], if reverse acting  (12b)

This is a general treatment for the process acting types. It applies to all model-free adaptive controllers to be introduced below.

FIG. 3 illustrates a reverse split-range setter that splits the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs R₁ and R₂ 50, respectively. The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas as implemented in the split-range setter mechanism 44:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {13a} \right) \\ \begin{matrix} {{{V_{1}(t)} = 0};} & {\mspace{160mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} & \left( {13b} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t); and

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \end{matrix} & \left( {14a} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{225mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \end{matrix} & \left( {14b} \right) \end{matrix}$ where 0≦R₂<100, which defines the split range of u(t) for controller output V₂(t). The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. In this design, the control valves are shut at 0% during their off position. We can move and set the R₁ and R₂ knobs freely within its (0, 100) range to produce controller outputs V₁(t), and V₂(t), where there may be a deadband, or an overlap, or no gaps in between. These 3 types of settings are all useful depending on the actuators and actual applications.

To expand the design, we can easily rescale each of the output signals V₁(t) and V₂(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions. These design concepts can be readily applied to all the controllers presented in this patent.

As illustrated in FIG. 2, the information of R₁ and R₂ inside the split-range setter is routed through signal lines 46 and 48 to elements L_(x)(·) 25 and K_(cx)(·) 42, respectively. Based on this design, the user can enter 2 sets of controller gains K₁, K₂ and time constants T_(c1), T_(c2) when configuring the controller. These are estimated controller gains and process time constants relating to the dynamics of the sub-systems between the manipulated variables V₁(t) and V₂(t) to the controlled process variable y(t), respectively.

To compensate for the static gain changes caused by the split-range setting of R₁ and R₂, we can re-scale the controller gains based on the following formulas:

$\begin{matrix} {{K_{c1} = {K_{1}\frac{R_{1}}{100}}},} & (15) \\ {{K_{c2} = {K_{2}\frac{100 - R_{2}}{100}}},} & (16) \end{matrix}$ where K₁ and K₂ are configured controller gains for V₁(t) and V₂(t), respectively.

Depending on tile current value of u(t), the corresponding controller parameters are used. Thus, the error signal E₁ of the neural network and the controller signal u(t) are calculated based on the corresponding parameters of K_(c) and T_(c) as follows:

$\begin{matrix} \begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {\mspace{256mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {17a} \right) \\ \begin{matrix} {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {17b} \right) \\ \begin{matrix} {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {\mspace{256mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack}} \end{matrix} & \left( {18a} \right) \\ \begin{matrix} {{u(t)} = {{K_{c2}{e(t)}} + {{100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}.}}} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \end{matrix} & \left( {18b} \right) \end{matrix}$ Then the controller outputs V₁(t) and V₂(t) can still be calculated based on Equations (13) and (14).

There are two special cases where we can make a more detailed design. In cases when R₁>R₂ and u(t) is inside the signal overlap area; and when R₁<R₂ and u(t) is inside the deadband, we can simply let

$\begin{matrix} \begin{matrix} {{K_{c} = \frac{K_{c1} + K_{c2}}{2}},} & {{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}} \end{matrix} & (19) \\ \begin{matrix} \begin{matrix} {{T_{c} = \frac{T_{c1} + T_{c2}}{2}},} & {{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}} \end{matrix} \end{matrix} & (20) \end{matrix}$ and then calculate E₁ and u(t) based on the averaged K_(c) and T_(c) of Equations 19 and 20.

Since model-free adaptive (MFA) controllers are adaptive, the detailed designs described in Equations (15), (16), (19), and (20) may not be necessary. However, they are useful for the control systems with non-adaptive controllers like PID controllers.

FIG. 4 illustrates an alternative design of the reverse split-range setter, where V₁(t) starts from 0 instead of 100 and V₂(t) ends at 0 instead of 100. It splits the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs R₁ and R₅₂, respectively. The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas that can be implemented in the split-range setter mechanism 44:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - R_{1}}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {21a} \right) \\ \begin{matrix} \begin{matrix} {{{V_{1}(t)} = 100},} & {\mspace{175mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} \end{matrix} & \left( {21b} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t); and

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{2}}{100 - R_{2}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \end{matrix} & \left( {22a} \right) \\ \begin{matrix} \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{194mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \end{matrix} \end{matrix} & \left( {22b} \right) \end{matrix}$ where 0≦R₂<100, which defines the split range of u(t) for controller output V₂(t). In these equations, u(t) is calculated based on Equations (17) and (18), respectively.

The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. This reverse split-range setter design is useful for situations where valves are wide open at 100% during their off position.

FIG. 5 illustrates a sequential split-range setter that converts the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ and S₂ 54, respectively.

The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas as implemented in the split-range setter mechanism 44:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \end{matrix} & \left( {23a} \right) \\ \begin{matrix} \begin{matrix} {{{V_{1}(t)} = 100},} & {\mspace{169mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \end{matrix} \end{matrix} & \left( {23b} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t); and

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \end{matrix} & \left( {24a} \right) \\ \begin{matrix} \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{230mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \end{matrix} \end{matrix} & \left( {24b} \right) \end{matrix}$ where 0≦S₁<100, which defines the split range of u(t) for controller output V₂(t). The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. In this design, the control valves are shut at 0% during their off position.

As illustrated in FIG. 5, we can move and set the S₁ and S₂ knobs freely within its (0, 100) range to produce controller outputs V₁(t), and V₂(t), where there may be a deadband, or an overlap, or no gaps in between. These 3 types of settings are all useful depending on the actuators and actual applications.

FIG. 6 illustrates an alternative design of the sequential split-range setter, where V₁(t) and V₂(t) start from 100 instead of 0. It converts the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ and S₂ 56, respectively. The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas that can be implemented in the split-range setter mechanism 44:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \end{matrix} & \left( {25a} \right) \\ \begin{matrix} \begin{matrix} {{{V_{1}(t)} = 0},} & {\mspace{160mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \end{matrix} \end{matrix} & \left( {25b} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t).

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{2}}{100 - S_{2}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \end{matrix} & \left( {26a} \right) \\ \begin{matrix} \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{191mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \end{matrix} \end{matrix} & \left( {26\; b} \right) \end{matrix}$ where 0≦S₂<100, which defines the split range of u(t) for controller output V₂(t).

In these equations, u(t) is calculated based on Equations (17) and (18), respectively. This sequential split-range setter design is useful for situations where valves are wide open at 100% during their off position.

The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t) and V₂(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions.

1-Input-3-Output Model-Free Adaptive Controller

FIG. 7 illustrates a 1-input-3-output (1×3) MFA controller that controls a 3-input-1-output (3×1) system. The control system consists of a 1-input-3-output (1×3) MFA controller 60, a 3-input-1-output (3×1) system 62, actuators A₁ through A₃ 58, and signal adders, 64, 66. The signals shown in FIG. 7 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t). x(t)—System Output. V₁(t)—Controller Output 1 to manipulate Actuator A₁. V₂(t)—Controller Output 2 to manipulate Actuator A₂. V₃(t)—Controller Output 3 to manipulate Actuator A₃. d(t)—Disturbance, the disturbance caused by noise or load changes. e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)−y(t).

The control objective is for the controller to produce outputs V₁(t), V₂(t) and V₃(t) to manipulate actuators A₁, A₂ and A₃ so that the measured variable y(t) tracks the given trajectory of its setpoint r(t) under variations of setpoint, disturbance, and process dynamics.

FIG. 8 illustrates the architecture of a 1-input-3-output model-free adaptive (MFA) controller. The elements 18 through 40 are the same as described for the 1-Input-2-Output MFA controller. The controller signal u(t) goes into a split-range setter R(·) 74 to produce the controller outputs V₁(t), V₂(t), and V₃(t).

The information inside the split-range setter 74 is routed through signal lines 76 and 78 to elements L_(x)(·) 70 and K_(cx)(·) 72, respectively. Based on this design, the user can enter 3 sets of controller gains K_(c1), K_(c2), K_(c3) and time constants T_(c1), T_(c2), T_(c3) when configuring the controller. These are estimated controller gains and process time constants relating to the dynamics of the sub-systems between the manipulated variables V₁(t), V₂(t) and V₃(t) to the controlled process variable y(t), respectively.

FIG. 9 illustrates a reverse split-range setter that splits the controller signal u(t) into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or not at all by moving and setting the knobs R₁, R₂, R₃ and R₄ 80, respectively. Using the similar technique, we can easily expand the 1×2 case to the 1×3 case. The controller outputs V₁(t), V₂(t) and V₃(t) are calculated based on the following formulas:

$\begin{matrix} \begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {\mspace{259mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {27a} \right) \\ \begin{matrix} {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {27b} \right) \\ \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {27c} \right) \\ \begin{matrix} {{{V_{1}(t)} = 0},} & {\mspace{340mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} & \left( {27d} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} \begin{matrix} {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {\mspace{259mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \end{matrix} & \left( {28a} \right) \\ \begin{matrix} {{{u(t)} = {{K_{c2}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \end{matrix} & \left( {28b} \right) \\ \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},} & {\mspace{124mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \end{matrix} & \left( {28c} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{340mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \end{matrix} & \left( {28d} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{315mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack}} \end{matrix} & \left( {28e} \right) \end{matrix}$ where 0≦R₂<100, 0<R₃≦100, and R₂<R₃, which define the split range of u(t) for controller output V₂(t); and

$\begin{matrix} \begin{matrix} {{E_{1} = {\frac{K_{c3}}{T_{c3}}{N\left( {e(t)} \right)}}},} & {\mspace{259mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack}} \end{matrix} & \left( {29a} \right) \\ \begin{matrix} {{{u(t)} = {{K_{c3}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack} \end{matrix} & \left( {29b} \right) \\ \begin{matrix} {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - R_{4}}{100 - R_{4}}} + 100}},} & {\mspace{124mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack}} \end{matrix} & \left( {29c} \right) \\ \begin{matrix} {{{V_{3}(t)} = 100},} & {\mspace{315mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{4}} \right)}} \end{matrix} & \left( {29d} \right) \end{matrix}$ where 0≦R₄<100, which defines the split range of u(t) for controller output V₃(t).

The signals u(t), V₁(t), V₂(t), and V₃(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t), V₂(t), and V₃(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions.

To simplify, the treatment on the controller parameters as described in Equations (15) and (16) for resealed controller gain, and in Equations (19) and (20) for averaged controller gain and time constant are not presented here but can be implemented similarly.

FIG. 10 illustrates an alternative design for the reverse split-range setter that splits the controller signal u(t) into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or not at all by moving and setting the knobs R₁, R₂, R₃ and R₄ 82, respectively. Using the similar technique, we can easily expand the 1×2 case to the 1×3 case. The controller outputs V1(t), V₂(t) and V₃(t) are calculated based on the following formulas:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - R_{1}}{R_{1}}} + 100}},} & {\mspace{76mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {30a} \right) \\ \begin{matrix} {{{V_{1}(t)} = 100},} & {\mspace{250mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} & \left( {30b} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{2}}{R_{3} - R_{2}}} + 100}},} & {\mspace{31mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \end{matrix} & \left( {31a} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{220mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \end{matrix} & \left( {31b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{250mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack}} \end{matrix} & \left( {31c} \right) \end{matrix}$ where 0≦R₂<100, 0<R₃≦100, and R₂<R₃, which define the split range of u(t) for controller output V₂(t); and

$\begin{matrix} \begin{matrix} {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{4} - 100}} + 100}},} & {\mspace{20mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4,}100} \right\rbrack}} \end{matrix} & \left( {32a} \right) \\ \begin{matrix} {{{V_{3}(t)} = 0},} & {\mspace{250mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{4}} \right)}} \end{matrix} & \left( {32b} \right) \end{matrix}$ where 0≦R₄<100 which defines the split range of u(t) for controller output V₃(t). In these equations, u(t) is calculated based on the Equations (27a), (27b), (28a), (28b), (29a) and (29b), respectively.

The signals u(t), V₁(t), V₂(t), and V₃(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t), V₂(t), and V₃(t) from its 0% to 100% range to an engineering value range by using, a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions. This reverse split-range setter design is useful for situations where valves are wide open at 100% during their off position.

FIG. 11 illustrates a sequential split-range setter that converts the controller signal u(t) into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ to S₄ 84, respectively.

The controller outputs V₁(t), V₂(t), and V₃(t) are calculated based on the following formulas as implemented in the split-range setter mechanism 74:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {\mspace{76mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \end{matrix} & \left( {33a} \right) \\ \begin{matrix} {{{V_{1}(t)} = 100},} & {\mspace{245mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \end{matrix} & \left( {33b} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},} & {\;{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} \end{matrix} & \left( {34a} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{220mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \end{matrix} & \left( {34b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{194mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack}} \end{matrix} & \left( {34c} \right) \end{matrix}$ where 0≦S₁<100, 0<S₃≦100, and S_(2<S) ₃, which define the split range of u(t) for controller output V₂(t); and

$\begin{matrix} \begin{matrix} {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{4} - 100}} + 100}},} & {\mspace{20mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{4,}100} \right\rbrack}} \end{matrix} & \left( {35a} \right) \\ \begin{matrix} {{{V_{3}(t)} = 0},} & {\mspace{250mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{4}} \right)}} \end{matrix} & \left( {35b} \right) \end{matrix}$ where 0≦S₄<100, which defines the split range of u(t) for controller output V₃(t). The signals u(t), V₁(t), V₂(t), and V₃(t) all have a working rang(e of 0% to 100%. In this design, the control valves are shut at 0% during their off position.

FIG. 12 illustrates an alternative design of the sequential split-range setter that converts the controller signal u(t) into 3 or more ranges to manipulate 3 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ to S₄ 86, respectively.

The controller outputs V₁(t), V₂(t), and V₃(t) are calculated based on the following formulas as implemented in the split-range setter mechanism 74:

$\begin{matrix} \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{S_{1}}} + 100}},} & {\mspace{76mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \end{matrix} & \left( {36a} \right) \\ \begin{matrix} {{{V_{1}(t)} = 0},} & {\mspace{239mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \end{matrix} & \left( {36b} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t).

$\begin{matrix} \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{2}}{S_{3} - S_{2}}} + 100}},} & {\;{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} \end{matrix} & \left( {37a} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{194mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \end{matrix} & \left( {37b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{220mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack}} \end{matrix} & \left( {37c} \right) \end{matrix}$ where 0≦S₂<100, 0<S₃≦100, and S₂<S₃, which define the split range of u(t) for controller output V₂(t); and

$\begin{matrix} \begin{matrix} {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - S_{4}}{100 - S_{4}}} + 100}},} & {\mspace{20mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{4,}100} \right\rbrack}} \end{matrix} & \left( {38a} \right) \\ \begin{matrix} {{{V_{3}(t)} = 100},} & {\mspace{205mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{4}} \right)}} \end{matrix} & \left( {38b} \right) \end{matrix}$ where 0≦S₄<100, which defines the split range of u(t) for controller output V₃(t). In these equations, u(t) is calculated based on the Equations (27a), (27b), (28a), (28b), (29a) and (29b), respectively.

The signals u(t), V₁(t), V₂(t), and V₃(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t), V₂(t), and V₃(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions. This sequential split-range setter design is useful for situations where valves are wide open at 100% during their off position.

C. Single-Input-Multi-Output Model-Free Adaptive Controller

FIG. 13 illustrates a 1-input-M-output (1×M) MFA controller that controls an M-input-1-output (M×1) system. The control system consists of a 1-input-M-output (1×M) MFA controller 90, an M-input-1-output (M×1) system 92, actuators A₁ through A_(M) 88, and signal adders, 94, 96. The signals shown in FIG. 13 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t).

x(t)—System Output.

V₁(t)—Controller Output 1 to manipulate Actuator A₁.

V₂(t)—Controller Output 2 to manipulate Actuator A₂.

. . .

V_(M)(t)—Controller Output M to manipulate Actuator A_(M).

d(t)—Disturbance, the disturbance caused by noise or load changes.

e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)−y(t).

The control objective is for the controller to produce outputs V₁(t), V₂(t), . . . ,V_(M)(t) to manipulate actuators A₁, A₂, . . . , A_(M) so that the measured variable y(t) tracks the given trajectory of its setpoint r(t) under variations of setpoint, disturbance, and process dynamics.

FIG. 14 illustrates the architecture of a 1-input-M-output MFA controller. The elements 18 through 40 are the same as described for the 1-Input-2-Output MFA controller. The controller signal u(t) goes into a split-range setter R(·) 104 to produce the controller outputs V₁(t), V₂(t), . . . , V₁M(t). The information inside the split-range setter R(·) is routed through signal lines 106 and 108 to elements L_(x)(·) 100 and K_(cx)(·) 102, respectively. Based on this design, the user can enter N4 sets of controller gains. K_(c1), K_(c2), . . . , K_(cM) and time constants T_(c1), T_(c2), T_(cM) when configuring the controller. These are estimated controller gains and process time constants relating to the dynamics of the sub-systems between the manipulated variables V₁(t), V₂(t), . . . , V_(M)(t) to the controlled process variable y(t), respectively.

Using the similar technique, we can expand the 1×3 case to the 1×M case. The reverse split-range setter similar to what is illustrated in FIG. 9 is used to split the controller signal u(t); and the controller outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} \begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {\mspace{259mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {39a} \right) \\ \begin{matrix} {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {39b} \right) \\ \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {39c} \right) \\ \begin{matrix} {{{V_{1}(t)} = 0},} & {\mspace{340mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} & \left( {39d} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} & \left( {40a} \right) \\ {{{u(t)} = {{K_{c2}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{i = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} & \left( {40b} \right) \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},} & {{{{for}\mspace{14mu}{all}\mspace{11mu}{u(t)}}{\;\;} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}\;} & \left( {40c} \right) \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{2}} \right)} & \left( {40d} \right) \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{3},100} \right\rbrack} & \left( {40e} \right) \end{matrix}$ where 0≦R₂<100, 0<R₃≦100, and R₂<R₃ which define the split range of u(t) for controller output V₂(t); . . . ;

Without losing generality, the last control signal V_(M)(t) can be calculated based on the following, formulas:

$\begin{matrix} {E_{1} = {\frac{K_{cM}}{T_{cM}}{{N\left( {e(t)} \right)}.}}} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} & \left( {41a} \right) \\ {{{u(t)} = {{K_{cM}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},{{{where}\mspace{14mu} M} = 3},4,5,{{6\mspace{14mu}\ldots}\mspace{11mu};}} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} & \left( {41b} \right) \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - R_{{2M} - 2}}{100 - R_{{2M} - 2}}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} & \left( {41c} \right) \\ {{{V_{M}(t)} = 100},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)} & \left( {41d} \right) \end{matrix}$ where M=3, 5, 7, . . . ; and 0≦R_(2M-2)<100 which defines the Split range of I1(t) for controller output V_(M)(t); and

$\begin{matrix} {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{{2M} - 2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} & \left( {41e} \right) \\ {{{V_{M}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)} & \left( {41f} \right) \end{matrix}$ where M=4, 6, 8, . . . ; and 0≦R_(2M-2)<100which defines the split range of u(t) for controller Output V_(M)(t).

The signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t), V₂(t), and V₃(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions. To simplify, the treatment on the controller parameters as described in Equations (15), (16), (19), and (20) are not presented here but can be implemented similarly. The alternative design for the reverse split-range setter similar to what is illustrated in FIG. 10 can also be derived.

A sequential split-range setter similar to what is illustrated in FIG. 11 is used; and the controller outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} & \left( {42a} \right) \\ {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} & \left( {42b} \right) \\ {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} & \left( {42c} \right) \\ {{{V_{1}(t)} = 100},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left( {S_{1},100} \right\rbrack} & \left( {42d} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack} & \left( {43a} \right) \\ {{{u(t)} = {{K_{c2}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack} & \left( {43b} \right) \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack} & \left( {43c} \right) \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,S_{2}} \right)} & \left( {43d} \right) \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{3},100} \right\rbrack} & \left( {43e} \right) \end{matrix}$ where 0≦S₂<100, 0<S₃≦100, and S₂<S₃ which define the split range of u(t) for controller output V₂(t); . . . ;

Without losing generality, the last control signal V_(M)(t) can be calculated based on the following formulas:

$\begin{matrix} {{E_{1} = {\frac{K_{cM}}{T_{cM}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack} & \left( {44a} \right) \\ {{{u(t)} = {{K_{cM}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack} & \left( {44b} \right) \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{{2M} - 2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack} & \left( {44c} \right) \\ {{{V_{M}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,S_{{2M} - 2}} \right)} & \left( {44d} \right) \end{matrix}$ where M=3, 4, 5, 6, . . . ; and 0≦S_(2M-2)<100 which defines the split range of u(t) for controller output V_(M)(t).

The signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all have a working range of 0% to 100%. Controller parameters K_(c1), K_(c2), . . . , K_(cM), T_(c1), T_(c2), . . . , T_(cM) are entered by the user during controller configuration. These are estimated controller gains and process time constants relating to the dynamics of the sub-systems between the manipulated variables V₁(t), V₂(t), . . . , V_(M)(t) to the controlled process variable y(t), respectively. To simplify, the treatment on the controller parameters as described in Equations (15), (16), (19), and (20) are not presented here but can be implemented similarly. The alternative design for the sequential split-range setter similar to what is illustrated in FIG. 12 can also be derived.

D. 1-Input-2-Output PID Controller

FIG. 15 illustrates a 1-input-2-output (1×2) Proportional-Integral-Derivative controller that controls a 2-input-1-output (2×1) system. The control system consists of a 1-input-2-output (1×2) PID controller 110, a 2-input-1-output (2×1) system 112, actuators A₁ and A₂ 118, and signal adders, 114, 116. The signals shown in FIG. 15 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t).

x(t)—System Output.

V₁(t)—Controller Output 1 to manipulate Actuator A₁.

V₂(t)—Controller Output 2 to manipulate Actuator A₂.

d(t)—Disturbance, the disturbance caused by noise or load changes.

e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)−y(t).

The control objective is for the controller to produce outputs V₁(t) and V₂(t) to manipulate actuators A₁ and A₂ so that the measured variable y(t) tracks the given trajectory of its setpoint r(t).

The standard PID algorithm has the following form:

$\begin{matrix} {{{u(t)} = {K_{p}\left\{ {{e(t)} + {\frac{1}{T_{i}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & (45) \end{matrix}$ where K_(p) is the Proportional Gain, T_(i) is the Integral Time in second/repeat, and T_(d) is the Derivative Time in repeat/second.

The reverse split-range setter described in FIG. 3 is readily useful to convert a SISO PID controller into a 1-input-2-output PID controller. The reverse split-range setter splits the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs R₁ and R₂ 50, respectively.

Based on the similar design procedure, we can allow the user to enter 2 sets of PID parameters K_(p1), K_(p2), T_(i1), T_(i2), T_(d1), T_(d2) for calculating controller outputs V₁(t) and V₂(t).

To compensate for the static gain changes caused by the split-range setting of R₁ and R₂, we can re-scale the controller gains based on the following formulas:

$\begin{matrix} {{K_{p1} = {K_{1}\frac{R_{1}}{100}}},} & (46) \\ {{K_{p2} = {K_{2}\frac{100 - R_{2}}{100}}},} & (47) \end{matrix}$ where K₁ and K₂ are configured controller gains of PID for V₁(t) and V₂(t), respectively.

The 1×2 PID controller outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} & \left( {48a} \right) \\ {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} & \left( {48b} \right) \\ {{{V_{1}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left( {R_{1},100} \right\rbrack} & \left( {48c} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t); and

$\begin{matrix} {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} & \text{(49a)} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} & \text{(49b)} \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in {\left\lbrack {0,R_{2}} \right).}} & \text{(49c)} \end{matrix}$ where 0≦R₂<100, which defines the split range of u(t) for controller output V₂(t). The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. In this design, the control valves are shut at 0% during their off position. We can move and set the R₁ and R₂ knobs freely within its (0, 100) range to produce controller outputs V₁(t), and V₂(t), where there may be a deadband, or an overlap, or no gaps in between. These 3 types of settings are all useful depending on the actuators and actual applications.

For the two special cases, when R₁>R₂ and u(t) is inside the signal overlap area; and when R₁<R₂ and u(t) is inside the deadband, we can simply let

${K_{p} = \frac{K_{p1} + K_{p2}}{2}},$ for u(t) inside deadband or overlap area (50a)

$\begin{matrix} \begin{matrix} {{T_{i} = \frac{T_{i1} + T_{2}}{2}},} & {{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}} \end{matrix} & \left( {50b} \right) \\ \begin{matrix} {{T_{d} = \frac{T_{d1} + T_{d2}}{2}},} & {{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}} \end{matrix} & \left( {50c} \right) \end{matrix}$ and then calculate u(t) based on Equation (45) using the averaged PID parameters.

The alternative design of the reverse split-range setter illustrated in FIG. 4 can also be applied to the PID controller, where V₁(t) starts from 0 instead of 100 and V₂(t) ends at 0 instead of 100. It splits the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs R₁ and R₂ 52, respectively. The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {51a} \right) \\ \begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - R_{1}}{R_{1}}} + 100}},} & {\mspace{166mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {51b} \right) \\ \begin{matrix} {{{V_{1}(t)} = 100},} & {\mspace{335mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} & \left( {52c} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t); and

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \end{matrix} & \left( {52a} \right) \\ \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{2}}{100 - R_{2}}} + 100}},} & {\mspace{146mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack}} \end{matrix} & \left( {52b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{335mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \end{matrix} & \left( {52c} \right) \end{matrix}$ where 0≦R₁<100, which defines the split range of u(t) for controller output V₂(t).

The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. This reverse split-range setter design is useful for situations where valves are wide open at 100% during their off position.

The sequential split-range setter as illustrated in FIG. 5 can be applied to the PID case that converts the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ and S₂ 54, respectively.

The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \end{matrix} & \left( {53a} \right) \\ \begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {\mspace{166mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \end{matrix} & \left( {53b} \right) \\ \begin{matrix} {{{V_{1}(t)} = 100},} & {\mspace{335mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \end{matrix} & \left( {53c} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t); and

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \end{matrix} & \left( {54a} \right) \\ \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{2} - 100}} + 100}},} & {\mspace{135mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack}} \end{matrix} & \left( {54b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{365mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \end{matrix} & \left( {54c} \right) \end{matrix}$ where 0≦S₂<100, which defines the split range of u(t) for controller output V₂(t). The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. In this design, the control valves are shut at 0% during their off position.

The alternative design of the sequential split-range setter as illustrated in FIG. 6 can also be applied to the PID case, where V₁(t) and V₂(t) start from 100 instead of 0. It converts the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ and S₂ 56, respectively. The controller outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \end{matrix} & \left( {55a} \right) \\ \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{S_{1}}} + 100}},} & {\mspace{205mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \end{matrix} & \left( {55b} \right) \\ \begin{matrix} {{{V_{1}(t)} = 0},} & {\mspace{365mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \end{matrix} & \left( {55c} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t).

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \end{matrix} & \left( {56a} \right) \\ \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{2}}{100 - S_{2}}} + 100}},} & {\mspace{149mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack}} \end{matrix} & \left( {56b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{340mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \end{matrix} & \left( {56c} \right) \end{matrix}$ where 0≦S₂<100, which defines the split range of u(t) for controller output V₂(t).

This sequential split-range setter design is useful for situations where valves are wide open at 100% during their off position. The signals u(t), V₁(t), and V₂(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t) and V₂(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions.

Since PID is not an adaptive controller, it may not be able to handle the large dynamic changes within the sub-systems even though the dynamic changes between the sub-systems may be handled by using different sets of PID tuning parameters. Model-Free Adaptive (MFA) controllers will outperform the PIDs because of their adaptive capability.

E. Single-Input-Multi-Output PID Controller

FIG. 16 illustrates a 1-input-M-output (1×M) PID controller that controls an M-input-1-output (M×1) system. The control system consists of a 1-input-M-output (1×M) PID controller 120, an M-input-1-output (M×1) system 122, actuators A1 through A_(M) 128, and signal adders, 124, 126. The signals shown in FIG. 16 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t).

x(t)—System Output.

V₁(t)—Controller Output 1 to manipulate Actuator A₁.

V₂(t)—Controller Output 2 to manipulate Actuator A₂.

. . .

V_(M)(t)—Controller Output M to manipulate Actuator A_(M).

d(t)—Disturbance, the disturbance caused by noise or load changes.

e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)—y(t).

The control objective is for the controller to produce outputs V₁(t), V₂(t), . . . ,V_(M)(t) to manipulate actuators A₁, A₂, . . . , A_(M) so that the measured variable y(t) tracks the given trajectory of its setpoint r(t).

Using the similar technique, we can expand the 1×2 case to the 1×M case. When control actions cancel each others a reverse split-range setter similar to what is illustrated in FIG. 9 is used; and the PID controller outputs V₁(t) and V₂(t) are calculated based oil the following formulas:

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \end{matrix} & \left( {57a} \right) \\ \begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {\mspace{200mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \end{matrix} & \left( {57b} \right) \\ \begin{matrix} {{{V_{1}(t)} = 0},} & {{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \end{matrix} & \left( {57c} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} \begin{matrix} {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \end{matrix} & \left( {58a} \right) \\ \begin{matrix} {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},} & {\mspace{149mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \end{matrix} & \left( {58b} \right) \\ \begin{matrix} {{{V_{2}(t)} = 0},} & {\mspace{365mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \end{matrix} & \left( {58c} \right) \\ \begin{matrix} {{{V_{2}(t)} = 100},} & {\mspace{340mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack}} \end{matrix} & \left( {58d} \right) \end{matrix}$ where 0≦R₂<100, 0<R₃≦100, and R₂<R₃ which define the split range of u(t) for controller output V₂(t); . . . ;

Without losing generality, the last control signal V_(M)(t) can be calculated based on the following formulas:

$\begin{matrix} {{{u(t)} = {K_{pM}\left\{ {{e(t)} + {\frac{1}{T_{iM}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{dM}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{{2M} - 2},}100} \right\rbrack}} & \left( {59a} \right) \end{matrix}$ where M=3, 4, 5, 6, . . . ;

$\begin{matrix} {{{V_{M}(t)} = \begin{matrix} {{{- 100}\frac{{u(t)} - R_{{2M} - 2}}{100 - R_{{2M} - 2}}} +} \\ 100 \end{matrix}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{{2M} - 2},}100} \right\rbrack}} & \left( {59b} \right) \\ {{{V_{M}(t)} = 100},\mspace{191mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)}} & \left( {59c} \right) \end{matrix}$ where M=3, 5, 7, . . . ; and 0≦R_(2M-2)<100 which defines the split range of u(t) for controller output V_(M)(t); and

$\begin{matrix} {{{V_{M}(t)} = \begin{matrix} {{{- 100}\frac{{u(t)} - 100}{R_{{2M} - 2} - 100}} +} \\ 100 \end{matrix}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{{2M} - 2},}100} \right\rbrack}} & \left( {59d} \right) \\ {{{V_{M}(t)} = 0},\mspace{214mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)}} & \left( {59e} \right) \end{matrix}$ where M=4, 6, 8, . . . ; and 0≦R_(2M-2)<100 which defines the split range of u(t) for controller output V_(M)(t).

The signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all have a working range of 0% to 100%. Controller parameters K_(p1), K_(p2), . . . , K_(pM), T_(i1), T_(i2), . . . , T_(iM), T_(d1), T_(d2), . . . , T_(dM) are entered by the user during controller Configuration. These are the PID tuning parameters suitable for the dynamics of the sub-systems between the manipulated variables V₁(t), V₂(t), . . . , V_(M)(t) to the controlled process variable y(t), respectively. To simplify, the treatment on the controller parameters as described in Equations (46), (47), and (50) are not presented here but can be implemented similarly.

When control actions compliment each other, a sequential split-range setter similar to what is illustrated in FIG. 11 is used; and the 1×M PID controller's outputs V₁(t) and V₂(t) are calculated based on the following formulas:

$\begin{matrix} {{{u(t)} = \begin{matrix} {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} +} \right.} \\ \left. {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}} \right\} \end{matrix}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} & \left( {60a} \right) \\ {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},\mspace{56mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} & \left( {60b} \right) \\ {{{V_{1}(t)} = 100},\mspace{220mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} & \left( {60c} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} {{{u(t)} = \begin{matrix} {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} +} \right.} \\ \left. {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}} \right\} \end{matrix}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} & \left( {61a} \right) \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},\mspace{34mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} & \left( {61b} \right) \\ {{{V_{2}(t)} = 0},\mspace{245mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} & \left( {61c} \right) \\ {{{V_{2}(t)} = 100},\mspace{220mu}{{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left( {S_{3},100} \right\rbrack}} & \left( {61d} \right) \end{matrix}$ where 0≦S₂<100, 0<S₃≦100, and S₂<S₃ which define the split range of u(t) for controller output V₂(t); . . . ;

Without losing generality, the last PID control signal V_(M)(t) can be calculated based on the following formulas:

$\begin{matrix} {{{u(t)} = \begin{matrix} {K_{pM}\left\{ {{e(t)} +} \right.} \\ {{\frac{1}{T_{iM}}{\int{{e(t)}{\mathbb{d}t}}}} +} \\ \left. {T_{dM}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}} \right\} \end{matrix}},\mspace{79mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack}} & \left( {62a} \right) \\ {{{V_{M}(t)} = \begin{matrix} {{{- 100}\frac{{u(t)} - 100}{S_{{2M} - 2} - 100}} +} \\ 100 \end{matrix}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack}} & \left( {62b} \right) \\ {{{{V_{M}(t)} = 0},\mspace{211mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{{2M} - 2}} \right)}}\mspace{31mu}} & \left( {62c} \right) \end{matrix}$ where M=3, 4, 5, 6, . . . ; and 0≦S_(2M-2)<100 which defines the split range of u(t) for controller output V_(M)(t).

The signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V₁(t) and V₂(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions. Controller parameters K_(p1), K_(p2), . . . , K_(pM), T_(i1), T_(i2), . . . , T_(iM), T_(d1), T_(d2), . . . , T_(dM) are entered by the user during controller configuration.

The alternative design of the reverse split-range setter as well as the sequential split-range setter as discussed in 1×2 PID controller case can be readily applied to the 1×M PID controller case. To simplify, they are not presented here.

Since PID is a general-purpose controller, the 1×2 and 1×M PID controllers presented in this patent apply to all alternative forms of PID algorithms. They may be P only, PI, PD, or PID controllers, in analog or digital formulas, with various definitions of variables, parameters and units, etc.

This 1×M PID controller with its M sets of tuning parameters will be more powerful than a single-input-single-output PID controller with one set of tuning parameters when controlling an M×1 system. However, since it is not an adaptive controller, it may not be able to handle the large dynamic changes within the sub-systems even though the dynamic changes between the sub-systems may be handled by using different sets of PID tuning parameters. The 1×M Model-Free Adaptive (MFA) controller presented in this patent is a more preferred solution for controlling an M×1 system.

F. Single-Input-Multi-Output Controller

FIG. 17 illustrates a single-input-multi-output (SIMO) controller that controls a multi-input-single-output (MISO) system. The control system consists of a single-input-multi-output (SIMO) controller 130, a multi-input-single-output (MISO) system 132, actuators A₁ through A_(M) 138, and signal adders, 134, 136. The signals shown in FIG. 17 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t).

x(t)—System Output.

V₁(t)—Controller Output 1 to manipulate Actuator A₁.

V₂(t)—Controller Output 2 to manipulate Actuator A₂.

V₃(t)—Controller Output 3 to manipulate Actuator A₃.

V_(M)(t)—Controller Output M to manipulate Actuator A_(M).

d(t)—Disturbance, the disturbance caused by noise or load changes.

e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)−y(t).

The control objective is for the controller to produce outputs V₁(t), V₂(t), V₃(t) . . . , V_(M)(t) to manipulate actuators A₁, A₂, A₃, . . . , A_(M) so that the measured variable y(t) tracks the given trajectory of its setpoint r(t).

The SIMO controller consists of a single-input-single-output (SISO) controller 140 and a split-range setter mechanism 142. Without losing generality, we assume the control output of the SISO controller is calculated in the following general form u(t)=ƒ(e(t),t, P ₁ , P ₂ , . . . , P ₁),  (63) where e(t) is the difference between controller setpoint r(t) and controlled process variable y(t), t is time, and P₁, P₂, . . . , P₁ are the controller tuning parameters. Error e(t) is calculated based on the acting type of the process as follows: e(t)=r(t)−y(t), if direct acting  (64a) e(t)=−[r(t)−y(t)], if reverse acting  (64b)

Using the similar technique, we can design reverse split-range setters and sequential split-range setters as described in this patent for this SISO controller so that it can be converted to a 1×2, 1×3, . . . , or 1×M controller to control a 2×1, 3×1, . . . , or M×1 system, respectively.

We first present the results for the reverse split-range setter case when multiple control actions cancel each other. Assuming parameter P₁ is the controller gain, to compensate for the static gain changes caused by the split-range setting of R₁, R₂, R₃ . . . , R_(2M-2), we can re-scale the controller gains based on the following formulas:

$\begin{matrix} {{P_{11} = {K_{1}\frac{R_{1}}{100}}},} & (65) \\ {{P_{12} = {K_{2}\frac{R_{3} - R_{2}}{100}}},} & (66) \\ {{P_{13} = {K_{3}\frac{R_{5} - R_{4}}{100}}},} & (67) \\ \ldots & \; \\ {{P_{1M} = {K_{M}\frac{100 - R_{{2M} - 2}}{100}}},} & (68) \end{matrix}$ where M=4, 5, 6, . . . ; R₂<R₃, R₄<R₅, R_(2M-2)<R_(2M-1), and K₁, K₂, K₃, . . . , K_(M) are entered controller gains of this controller for calculating the corresponding signals V₁(t), V₂(t), V₃(t), . . . , V_(M)(t), respectively.

FIG. 18 illustrates a reverse split-range setter that splits the controller signal u(t) into M or more ranges to manipulate M different actuators individually, simultaneously, or not at all by moving and setting the knobs R₁, R₂, R₃, . . . R_(2M-2) 146, respectively. The controller outputs V₁(t), V₂(t) and V₃(t) are calculated based on the following formulas as implemented in the split-range setter mechanism 142:

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{11},P_{21},\ldots\mspace{11mu},P_{l1}} \right)}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} & \left( {69a} \right) \\ {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},\mspace{110mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} & \left( {69b} \right) \\ {{{V_{1}(t)} = 0},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} & \left( {69c} \right) \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{12},P_{22},\ldots\mspace{11mu},P_{l2}} \right)}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} & \left( {70a} \right) \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},\mspace{56mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} & \left( {70b} \right) \\ {{{V_{2}(t)} = 0},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} & \left( {70c} \right) \\ {{{V_{2}(t)} = 100},\mspace{245mu}{{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left( {R_{3},100} \right\rbrack}} & \left( {61d} \right) \end{matrix}$ where 0≦R₂<100, 0<R₃≦100, and R₂<R₃ which define the split range of u(t) for controller output V₂(t);

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{13},P_{23},\ldots\mspace{11mu},P_{l3}} \right)}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},R_{5}} \right\rbrack}} & \left( {71a} \right) \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - R_{4}}{R_{5} - R_{4}}} + 100}},\mspace{50mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},R_{5}} \right\rbrack}} & \left( {71b} \right) \\ {{{V_{3}(t)} = 100},\mspace{239mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{4}} \right)}} & \left( {71c} \right) \\ {{{V_{3}(t)} = 0},\mspace{265mu}{{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left( {R_{5},100} \right\rbrack}} & \left( {71d} \right) \end{matrix}$ where 0≦R₄<100, 0<R₅≦100, and R₄<R₅ which define the split range of u(t) for controller output V₃(t); . . . ;

Without losing generality, the last control signal V_(M)(t) can be calculated based on the following formulas:

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{1M},P_{2M},\ldots\mspace{11mu},P_{l\; M}} \right)}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} & \left( {72a} \right) \\ {{{{where}\mspace{14mu} M} = 4},5,6,7,{\ldots\mspace{11mu};}} & \; \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - R_{{2M} - 2}}{100 - R_{{2M} - 2}}} + 100}},\mspace{31mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} & \left( {72b} \right) \\ {{{V_{M}(t)} = 100},\mspace{259mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)}} & \left( {72c} \right) \\ {{{{where}\mspace{14mu} M} = 5},7,9,{\ldots\mspace{11mu};{{{and}\mspace{14mu} 0} \leq R_{{2M} - 2} < 100};}} & \; \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{{2M} - 2} - 100}} + 100}},\mspace{31mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} & \left( {72d} \right) \\ {{{V_{M}(t)} = 0},\mspace{284mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)}} & \left( {72e} \right) \end{matrix}$ where M=4, 6, 8, . . . ; and 0≦R_(2M-2)<100 which defines the split range of u(t) for controller output V_(M)(t).

The signals u(t), V₁(t), V₂(t), V₂(t), . . . , V_(M)(t) all have a working range of 0% to 100%. Controller parameters P₁₁, P₁₂, . . . , P_(1M), P₂₁, P₂₂, . . . , P_(2M), . . . , P₃₁, P₃₂, . . . , P_(3M), . . . , P₁₁, P₁₂, . . . , P_(1M), are entered by the user during controller configuration. These are the controller tuning parameters suitable for the dynamics of the sub-systems between the manipulated variables V₁(t), V₂(t), V₃(t), . . . , V_(M)(t) to the controlled process variable y(t), respectively.

For the two special cases, when R_(2i-2)>R_(2i-3) and u(t) is inside the signal overlap area; and when R_(2i-2)<R_(2i-3) and u(t) is inside the deadband, we can simply let

$\begin{matrix} {{P_{1i} = \frac{P_{1,{{2i} - 2}} + P_{1,{{2i} - 3}}}{2}},{{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}}} & \left( {73a} \right) \\ {{P_{2i} = \frac{P_{2,{{2i} - 2}} + P_{2,{{2i} - 3}}}{2}},{{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}}} & \left( {73b} \right) \\ \ldots & \; \\ {{P_{l,i} = \frac{P_{l,{{2i} - 2}} + P_{l,{{2i} - 3}}}{2}},{{for}\mspace{14mu}{u(t)}\mspace{14mu}{inside}\mspace{14mu}{deadband}\mspace{14mu}{or}\mspace{14mu}{overlap}\mspace{14mu}{area}}} & \left( {73c} \right) \end{matrix}$ where i=2, 3, 4, . . . , M. Then, the controller signal u(t) can be calculated based on these averaged controller tuning parameters accordingly based on whether or not u(t) is inside the deadband or overlap area. Equations (65) to (72) are still valid in these cases.

In the sequential split-range setter case when multiple control actions compliment each other, we can apply the similar technique to calculate the controller parameters. Assuming parameter P₁ is the controller gain, to compensate for the static gain changes caused by the sequential split-range setting of S₁, S₂, S₃ . . . , S_(2M-2), we can re-scale the controller gains based on the following formulas:

$\begin{matrix} {{P_{11} = {K_{1}\frac{S_{1}}{100}}},} & (74) \\ {{P_{12} = {K_{2}\frac{S_{3} - S_{2}}{100}}},} & (75) \\ {{P_{13} = {K_{3}\frac{S_{5} - S_{4}}{100}}},} & (76) \\ \ldots & \; \\ {{P_{1M} = {K_{M}\frac{100 - S_{{2M} - 2}}{100}}},} & (77) \end{matrix}$ where M=4, 5, 6 . . . ; S₂<S₃, S₄<S₅, S_(2M-2)<S_(2M-1), and K₁, K₂, K₃, . . . , K_(M) are entered controller gains of this controller for V₁(t), V₂(t), V₃(t), . . . , V_(M)(t), respectively.

FIG. 19 illustrates a sequential split-range setter that converts the controller signal u(t) into M or more ranges to manipulate M different actuators individually, simultaneously, or not at all by moving and setting the knobs S₁, S₂, S₃, . . . , S_(2M-2) 148, respectively. The controller outputs V₁(t), V₂(t), and V₃(t) are calculated based on the following formulas as implemented in the split-range setter mechanism 142:

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{11},P_{21},\ldots\mspace{11mu},P_{l1}} \right)}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} & \left( {78a} \right) \\ {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},\mspace{76mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} & \left( {78b} \right) \\ {{{V_{1}(t)} = 100},\mspace{239mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} & \left( {78c} \right) \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V₁(t);

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{12},P_{22},\ldots\mspace{11mu},P_{l2}} \right)}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} & \left( {79a} \right) \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},\mspace{59mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} & \left( {79b} \right) \\ {{{V_{2}(t)} = 0},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} & \left( {79c} \right) \\ {{{V_{2}(t)} = 100},\mspace{239mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack}} & \left( {79d} \right) \end{matrix}$ where 0≦S₂<100, 0<S₃≦100, and S₂<S₃, which define the split range of u(t) for controller output V₂(t); and

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{13},P_{23},\ldots\mspace{11mu},P_{l3}} \right)}},\mspace{34mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{4},S_{5}} \right\rbrack}} & \left( {80a} \right) \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - S_{5}}{S_{4} - S_{5}}} + 100}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{4},S_{5}} \right\rbrack}} & \left( {80b} \right) \\ {{{V_{3}(t)} = 0},\mspace{304mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{4}} \right)}} & \left( {80c} \right) \\ {{{V_{3}(t)} = 100},\mspace{275mu}{{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left( {S_{5},100} \right\rbrack}} & \left( {80d} \right) \end{matrix}$ where 0≦S₄<100, 0<S₅≦100, and S₄<S₅, which define the split range of u(t) for controller output V₃(t); . . . ;

Without losing generality, the last control signal V_(M)(t) of this 1×M controller can be calculated based on the following formulas:

$\begin{matrix} {{{u(t)} = {f\left( {{e(t)},t,P_{1M},P_{2M},\ldots\mspace{11mu},P_{lM}} \right)}},\;{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack}} & \left( {81a} \right) \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{{2M} - 2} - 100}} + 100}},\mspace{34mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack}} & \left( {81b} \right) \\ {{{V_{M}(t)} = 0},\mspace{290mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{{2M} - 2}} \right\rbrack}} & \left( {81c} \right) \end{matrix}$ where M=4, 5, 6, 7, . . . ; and 0≦S_(2M-2)<100 which defines the split range of u(t) for controller output V_(M)(t).

The signals u(t), V₁(t), V₂(t), V₃(t), . . . , V_(M)(t) all have a working range of 0% to 100%. Controller parameters P₁₁, P₁₂, . . . , P_(1M), P₂₁, P₂₂, . . . , P_(2M), . . . , P₃₁, P₃₂, . . . , P_(3M), . . . , P₁₁, P₁₂, . . . , P_(1M) are entered by the user during controller configuration. These are the controller tuning parameters suitable for the dynamics of the sub-systems between the manipulated variables V₁(t), V₂(t), V₃(t), . . . , V_(M)(t) to the controlled process variable y(t), respectively.

The alternative design of the reverse split-range setter and the sequential split-range setter as discussed in 1×3 MFA controller case of this patent can be readily applied to this 1×M controller case. To simplify, they are not presented here.

G. SIMO Controller with Combined Split-Range Setter

FIG. 20 illustrates a single-input-multi-output (SIMO) controller that controls a multi-input-single-output (MISO) system, where a combined split-range setter is used. The control system consists of a single-input-multi-output (SIMO) controller 150, a multi-input-single-output (MISO) system 152, actuators A_(r1) A_(r2) A_(s1) and A_(s2) 158, and signal adders, 154, 156. The signals shown in FIG. 20 are as follows:

r(t)—Setpoint.

y(t)—Measured Variable or the Process Variable, y(t)=x(t)+d(t).

x(t)—System Output.

V_(r1)(t)—Controller Output to manipulate Actuator A_(r1).

V_(r2)(t)—Controller Output to manipulate Actuator A_(r2).

V_(s1)(t)—Controller Output to manipulate Actuator A_(s1).

V_(s2)(t)—Controller Output to manipulate Actuator A_(s2).

d(t)—Disturbance, the disturbance caused by noise or load changes.

e(t)—Error between the Setpoint and Measured Variable, e(t)=r(t)−y(t).

The control objective is for the controller to produce outputs V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t) to manipulate actuators A_(r1), A_(r2), A_(s1), and A_(s2) so that the measured variable y(t) tracks the given trajectory of its setpoint r(t).

The SIMO controller 150 consists of a single-input-single-output (SISO) controller 160 and a combined split-range setter 166. The combined split-range setter combines the control actions that cancel each other and the control actions that compliment each other. For instance, a pH control system may use a coarse acid valve, a fine acid valve, a coarse caustic valve, and a fine caustic valve to provide sufficient working range for dosing the acid and caustic reagent simultaneously, individually, or not at all.

The combined split-range setter 166 in FIG. 20 consists of a reverse split-range setter mechanism 162, and a sequential split-range setter mechanism 164. This is an example of how a combined split-range setter mechanism can be constructed to convert the controller signal u(t) of a SISO controller to control outputs V_(r1)(t), V_(r2)(t), V_(s1)(t) and V_(s2)(t) to manipulate actuators A_(r1), A_(r2), A_(s1), and A_(s2), which include control actions that cancel each other and control actions that compliment each other.

We assume the control output of the SISO controller is calculated in the following general form u(t)=ƒ(e(t),t, P ₁ , P ₂ , . . . , P ₁),  (82) where e(t) is the difference between controller setpoint r(t) and controlled process variable y(t), t is time, and P₁, P₂, . . . , P₁ are the controller tuning parameters. Error e(t) is calculated based on the acting type of the process as follows: e(t)=r(t)−y(t), if direct acting  (83a) e(t)=−[r(t)−y(t)]. if reverse acting  (83b)

Without losing generality, we will use the 1×2 reverse split-range setter as illustrated in FIG. 3 and the 1×2 sequential split-range setter as illustrated in FIG. 5 to demonstrate the idea of constructing a combined split-range setter. Since we have shown the detailed design of the 1×3 and 1×M reverse split-range setters as well as the 1×3 and 1×M sequential split-range setters, the 1×3 and 1×M combined split-range setters can be constructed in a similar way. To simplify, they are not presented here.

The reverse split-range setter shown in FIG. 3 splits the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs R₁ and R₂ 50, respectively. The corresponding controller outputs V_(r1)(t) and V_(r2)(t) in FIG. 20 are calculated based on the following formulas:

$\begin{matrix} {{{V_{r1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},\;{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} & \left( {84a} \right) \\ {{{V_{r1}(t)} = 0},\mspace{166mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} & {\;\left( {84b} \right)} \end{matrix}$ where 0<R₁≦100, which defines the split range of u(t) for controller output V_(r1)(t); and

$\begin{matrix} {{{V_{r2}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{2} - 100}} + 100}},\;{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack}} & \left( {85a} \right) \\ {{{V_{r2}(t)} = 0},\mspace{236mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} & {\;\left( {85b} \right)} \end{matrix}$ where 0≦R₂<100, which defines the split range of u(t) for controller output V_(r2)(t).

The sequential split-range setter as illustrated in FIG. 5 converts the controller signal u(t) into 2 or more ranges to manipulate 2 different actuators individually, simultaneously, or neither by moving and setting the knobs S₁ and S₂ 54, respectively. The corresponding controller outputs V_(s1)(t) and V_(s2)(t) in FIG. 20 are calculated based on the following formulas:

$\begin{matrix} {{{V_{s1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},\;{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} & \left( {86a} \right) \\ {{{V_{s1}(t)} = 100},\mspace{169mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} & {\;\left( {86b} \right)} \end{matrix}$ where 0<S₁≦100, which defines the split range of u(t) for controller output V_(s1)(t); and

$\begin{matrix} {{{V_{s2}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{2} - 100}} + 100}},} & {{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack}\mspace{14mu}} & \left( {87a} \right) \\ {{{V_{s2}(t)} = 0},} & {{{for}\mspace{20mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)} & \left( {87b} \right) \end{matrix}$ where 0≦S₂<100, which defines the split range of u(t) for controller output V_(s2)(t).

The signals u(t), V_(r1)(t), V_(r2)(t), V_(s1)(t) and V_(s2)(t) all have a working range of 0% to 100%. We can easily rescale each of the output signals V_(r1)(t), V_(r2)(t), V_(s1)(t) and V_(s2)(t) from its 0% to 100% range to an engineering value range by using a linear function. In addition, control limits and constraints can be applied to these signals for safety or other reasons to limit the control actions.

This is the general case example of converting a single-input-single-output (SISO) controller including but not limited to a model-free adaptive (MFA) controller, or a proportional-integral-derivative (PID) controller, or any other form of SISO controller to a single-input-multi-output (SIMO) controller to manipulate M actuators individually, simultaneously, or not at all to control a multi-input-single-output (MISO) system or process. In these cases, control actions may cancel each other or compliment each other. The reverse split-range setters and sequential split-range setters presented in this patent can be combined in one combined split-range setter mechanism to perform respective control actions to achieve control objectives. While the foregoing has been with reference to particular embodiments of the invention, it will be appreciated by those skilled in the art that changes in these embodiments may be made without departing from the principles and spirit of the invention, the scope of which is defined by the appended claims. 

1. A 1-input-2-output controller for a process having a process output which is controlled by two controller outputs V₁(t) and V₂(t) applied to two actuators whose outputs are the inputs of said process, said controller including a neural network comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a normalization unit for normalizing said error input to a predetermined range of values; c) a scaling function for scaling said normalized error input to produce a value E₁ of the form ${E_{1} = {\frac{K_{cx}}{T_{cx}}{N\left( {e(t)} \right)}}},$ or an equivalent thereof, in which K_(cx) is the controller gain; T_(cx) is the user-selected time constant of said process; N(·) is the normalization function of said normalization unit; and e(t) is the value of said error input at any given time; d) a layer of input neurons having as their inputs successively time-delayed values of E₁; e) a layer of hidden neurons each having as its output the sum of individually weighted ones of said successively time-delayed values of E₁; f) an output neuron having as its output the sum of a first function of the individually weighted outputs of said hidden neurons; g) a control signal u(t) which is at least in part the denormalized value of a second function of the output of said output neuron; and h) a split-range setter arranged to produce from the said control signal the said controller outputs V₁(t) and V₂(t).
 2. The controller of claim 1, in which said control signal u(t) is the sum of said denormalized value and the value K_(cx)e(t), or an equivalent thereof.
 3. The controller of claim 1, in which said first and second functions are both of the form $\begin{matrix} {{{f(x)} = 0},} & {{{if}{\mspace{11mu}\;}x} < {- \frac{b}{a}}} \\ {{{f(x)} = {{ax} + b}},} & {{{{if}\; - \frac{b}{a}} \leq x \leq \;\frac{b}{a}}\mspace{11mu}} \\ {{{f(x)} = 1},} & {{{if}{\;\mspace{11mu}}x} > \frac{b}{a}} \end{matrix}$ or an equivalent thereof, wherein a is an arbitrary constant and b=½.
 4. The controller of claim 1, in which the said scaling function for scaling said normalized error input to produce a value E₁ of the form $\begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \end{matrix}$ or an equivalent thereof, in which K_(c1) and K_(c2) are controller gains; T_(c1) and T_(c2) are the user-selected time constants of said process; N(·) is the normalization function of said normalization unit; e(t) is the value of said error input at any given time; and R₁ and R₂ are two values within 0 to
 100. 5. The controller of claim 1, in which said control signal is of the form: $\begin{matrix} {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{u(t)} = {{K_{c2}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \end{matrix}$ or an equivalent thereof, in which K_(c1) and K_(c2) are controller gains; e(t) is said error signal; h_(j)(n) is the weighting factor for the jth hidden neuron output; q_(j)(n) is the jth hidden neuron output; and R₁ and R₂ are two values within 0 to
 100. 6. The controller of claim 5, in which said controller gains K_(c1) and K_(c2) are of the form: $\begin{matrix} {{K_{c1} = {K_{1}\frac{R_{1}}{100}}},} \\ {{K_{c2} = {K_{2}\frac{100 - R_{2}}{100}}},} \end{matrix}$ or an equivalent thereof, in which K₁ and K₂ are user-selected controller gains for controller outputs V₁(t) and V₂(t); and R₁ and R₂ are two values within 0 to
 100. 7. The controller of claim 1, in which the said scaling function for scaling said normalized error input to produce the value E₁ is of the form ${E_{1} = {\frac{K_{c}}{T_{c}}{N\left( {e(t)} \right)}}},$ or an equivalent thereof, where the controller gain K_(c) and time constant T_(c) are of the form: $\begin{matrix} {{K_{c} = \frac{K_{c1} + K_{c2}}{2}},} \\ {{T_{c} = \frac{T_{c1} + T_{c2}}{2}},} \end{matrix}$ or an equivalent thereof, in which K₁ and K₂ are user-selected controller gains for controller outputs V₁(t) and V₂(t); u(t) is inside the signal overlap area if the signals V₁(t) and V₂(t) overlap; or u(t) is inside the deadband if a deadband between the signals V₁(t) and V₂(t) exist.
 8. A 1-input-2-output Proportional-Integral-Derivative (PID) controller for a process having a process output which is controlled by two controller outputs V₁(t) and V₂(t) applied to two actuators whose outputs are the inputs of said process, said controller comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a control signal u(t) is of the form: ${{u(t)} = {K_{p}\left\{ {{e(t)} + {\frac{1}{T_{i}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},$ or equivalent thereof, in which K_(p) is the proportional gain, T_(i) is the integral time, and T_(d) is the derivative time; e(t) is the value of said error input at any given time; and c) a split-range setter arranged to produce from the said control signal the said controller outputs V₁(t) and V₂(t).
 9. The controller of claim 8, in which said control signal is of the form: $\begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},} & {{{{for}\mspace{14mu}{all}\mspace{11mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack}\mspace{20mu}} \end{matrix}$ or an equivalent thereof, in which K_(p1) and K_(p2) are the proportional gains, T_(i1) and T_(i2) are the integral times, T_(d1) and T_(d2) are the derivative times; e(t) is said error signal; and R₁ and R₂ are two values within 0 to
 100. 10. The controller of claim 9, in which said proportional gain, integral time, and derivative time are of the form: ${K_{P} = \frac{K_{P1} + K_{p2}}{2}},{T_{i} = \frac{T_{i1} + T_{i2}}{2}},{T_{d} = \frac{T_{d1} + T_{d2}}{2}},$ or an equivalent thereof, in which u(t) is inside the signal overlap area if the signals V₁(t) and V₂(t) overlap; or u(t) is inside the deadband if a deadband between the signals V₁(t) and V₂(t) exist.
 11. The controller of claim 9, in which said proportional gains are of the form: ${K_{p1} = {K_{1}\frac{R_{1}}{100}}},{K_{p2} = {K_{2}\frac{100 - R_{2}}{100}}},$ or an equivalent thereof, in which K₁ and K₂ are user-selected proportional gains of PID for said controller outputs V₁(t) and V₂(t); and R₁ and R₂ are two values within 0 to
 100. 12. The controller of claim 1 or 8, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right\rbrack} \end{matrix}$ or an equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, the signals u(t), V₁(t), and V₂(t) all having a working range of 0 to
 100. 13. The controller of claim 1 or 8, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - R_{1}}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{2}}{100 - R_{2}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack} \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)} \end{matrix}$ or an equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, the signals u(t), V₁(t), and V₂(t) all having a working range of 0 to
 100. 14. The controller of claim 1 or 8, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)} \end{matrix}$ or an equivalent thereof, in which 0<S₁≦100, 0≦S₂<100, the signals u(t), V₁(t), and V₂(t) all having a working range of 0 to
 100. 15. The controller of claim 1 or 8, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{2}}{100 - S_{2}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)} \end{matrix}$ or an equivalent thereof, in which 0<S₁≦100, 0≦S₂<100, the signals u(t), V₁(t), and V₂(t) all having a working range of 0 to
 100. 16. The controller of claim 12, 13, 14, or 15, in which said split-range setter includes individual controls that can be set freely within said split range to produce controller outputs V₁(t), and V₂(t) that provide a deadband between said controller outputs, an overlap thereof, or a continuum from one to the other.
 17. The controller of claim 1 or 8, in which the controller outputs V₁(t) and V₂(t) are re-scalable from the 0 to 100 range to an engineering value range by using a linear function.
 18. The controller of claim 1 or 8, in which the controller outputs V₁(t) and V₂(t) are arranged to include selectable control limits or control constraints.
 19. A 1-input-3-output controller for a process having a process output which is controlled by three controller outputs V₁(t), V₂(t), and V₃(t) applied to three actuators whose outputs are the inputs of said process, said controller including a neural network comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a normalization unit for normalizing said error input to a predetermined range of values; c) a scaling function for scaling said normalized error input to produce a value E₁ of the form $\begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \\ {{E_{1} = {\frac{K_{c3}}{T_{c3}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, 0≦R₄<100, K_(c1), K_(c2), and K_(c3) are the controller gains; T_(c1), T_(c2), and T_(c3) are the user-selected time constants of said process; N(·) is the normalization function of said normalization unit; and e(t) is the value of said error input at any given time; d) a layer of input neurons having as their inputs successively time-delayed values of E₁; e) a layer of hidden neurons each having as its output the sum of individually weighted ones of said successively time-delayed values of E₁; f) an output neuron having as its output the sum of a first function of the individually weighted outputs of said hidden neurons; g) a control signal u(t) which is at least in part the denormalized value of a second function of the output of said output neuron; and h) a split-range setter arranged to produce from the said control signal the said controller outputs V₁(t), V₂(t), and V₃(t).
 20. The controller of claim 19, in which said first and second functions are both of the form $\begin{matrix} {{{f(x)} = 0},} & {{{if}\mspace{14mu} x} < {- \frac{b}{a}}} \\ {{{f(x)} = {{ax} + b}},} & {{{if} - \frac{b}{a}} \leq x \leq \frac{b}{a}} \\ {{{f(x)} = 1},} & {{{if}{\mspace{11mu}\;}x} > \frac{b}{a}} \end{matrix}$ or an equivalent thereof, wherein a is an arbitrary constant and b=½.
 21. The controller of claim 19, in which said control signal is of the form: $\begin{matrix} {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{u(t)} = {{K_{c2}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \\ {{{u(t)} = {{K_{c3}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, 0≦R₄<100, K_(c1), K_(c2), and K_(c3) are the controller gains; e(t) is said error signal; h_(j)(n) is the weighting factor for the jth hidden neuron output; and q_(j)(n) is the jth hidden neuron output.
 22. The controller of claim 19, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)} \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack} \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - R_{4}}{100 - R_{4}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack} \\ {{{V_{3}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{4}} \right)} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, 023 R₄<100, the signals u(t), V₁(t), V₂(t), and V₃(t) all having a working range of 0 to
 100. 23. The controller of claim 19, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - R_{1}}{R_{1}}} + 100}},\mspace{40mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \\ {{{V_{1}(t)} = 100},\mspace{211mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{2}}{R_{3} - R_{2}}} + 100}},\mspace{20mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \\ {{{V_{2}(t)} = 100},\mspace{205mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \\ {{{V_{2}(t)} = 0},\mspace{230mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack}} \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{4} - 100}} + 100}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{4},100} \right\rbrack}} \\ {{{V_{3}(t)} = 0},\mspace{225mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{4}} \right)}} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, 0≦R₄<100, the signals u(t), V₁(t), V₂(t), and V₃(t) all having a working range of 0 to
 100. 24. The controller of claim 19, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},\mspace{40mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \\ {{{V_{1}(t)} = 100},\mspace{211mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},\mspace{20mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} \\ {{{V_{2}(t)} = 0},\mspace{230mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \\ {{{V_{2}(t)} = 100},\mspace{205mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack}} \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{4} - 100}} + 100}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{4},100} \right\rbrack}} \\ {{{V_{3}(t)} = 0},\mspace{225mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{4}} \right)}} \end{matrix}$ or equivalent thereof, in which 0<S₁≦100, 0≦S₂<100, 0<S₃≦100, S₂<S₃, and 0≦S₄<100; S_(j) being equivalent to R_(j), j=1, 2, 3, 4; the signals u(t), V₁(t), V₂(t), and V₃(t) all having a working range of 0 to
 100. 25. The controller of claim 19, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{S_{1}}} + 100}},\mspace{76mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \\ {{{V_{1}(t)} = 0},\mspace{236mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{2}}{S_{3} - S_{2}}} + 100}},\mspace{20mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} \\ {{{V_{2}(t)} = 100},\mspace{205mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \\ {{{V_{2}(t)} = 0},\mspace{230mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack}} \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - S_{4}}{100 - S_{4}}} + 100}},\mspace{14mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{4},100} \right\rbrack}} \\ {{{V_{3}(t)} = 100},\mspace{200mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{4}} \right)}} \end{matrix}$ or equivalent thereof, in which 0<S₁≦100, 0≦S₂<100, 0<S₃≦100, S₂<S₃, and 0≦S₄100; S_(j) being equivalent to R_(j), j=1, 2, 3, 4; the signals u(t), V₁(t), V₂(t), and V₃(t) all having a working range of 0 to
 100. 26. The controller of claim 22, 23, 24, or 25, in which said split-range setter includes individual controls that can be set freely within said split range to produce controller outputs V₁(t), V₂(t) and V₃(t) that provide a deadband between said controller outputs, an overlap thereof, or a continuum from one to the other.
 27. The controller of claim 19, in which the controller outputs V₁(t), V₂(t) and V₃(t) are re-scalable from the 0 to 100 range to an engineering value range by using a linear function.
 28. The controller of claim 19, in which the controller outputs V₁(t), V₂(t) and V₃(t) are arranged to include selectable control limits or control constraints.
 29. A 1-input-M-output controller for a process having a process output which is controlled by M controller outputs V₁(t), V₂(t), . . . , V_(M)(t) applied to M actuators whose outputs are the inputs of said process, said controller including a neural network comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a normalization unit for normalizing said error input to a predetermined range of values; c) a scaling function for scaling said normalized error input to produce a value E₁of the form $\begin{matrix} {{E_{1} = {\frac{K_{c1}}{T_{c1}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{E_{1} = {\frac{K_{c2}}{T_{c2}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \\ \ldots & \; \\ {{E_{1} = {\frac{K_{cM}}{T_{cM}}{N\left( {e(t)} \right)}}},} & {{{for}\mspace{14mu}{all}\mspace{14mu} u\;(t)} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, . . . , 0≦R_(2M-2)<100, M=3, 4, 5, 6 . . . ; K_(c1), K_(c2), . . . , K_(cM) are the controller gains; T_(c1), T_(c2), . . . , T_(cM) are the user-selected time constants of said process; N(·) is the normalization function of said normalization unit; and e(t) is the value of said error input at any given time; d) a layer of input neurons having as their inputs successively time-delayed values of E₁; e) a layer of hidden neurons each having as its output the sum of individually weighted ones of said successively time-delayed values of E₁; f) an output neuron having as its output the sum of a first function of the individually weighted outputs of said hidden neurons; g) a control signal u(t) which is at least in part the denormalized value of a second function of the output of said output neuron; and h) a split-range setter arranged to produce from the said control signal the said controller outputs V₁(t), V₂(t), . . . , V_(M)(t).
 30. The controller of claim 29, in which said control signal u(t) is the sum of said denormalized value and the value K_(cx)e(t), or an equivalent thereof.
 31. The controller of claim 29, in which said first and second functions are both of the form $\begin{matrix} {{{f(x)} = 0},} & {{{if}\mspace{14mu} x} < {- \frac{b}{a}}} \\ {{{f(x)} = {{ax} + b}},} & {{{if} - \frac{b}{a}} \leq x \leq \frac{b}{a}} \\ {{{f(x)} = 1},} & {{{if}\mspace{14mu} x} > \frac{b}{a}} \end{matrix}$ or an equivalent thereof, wherein a is an arbitrary constant and b=½.
 32. The controller of claim 29, in which said control signal is of the form: $\begin{matrix} {{{u(t)} = {{K_{c1}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \\ {{{u(t)} = {{K_{c2}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \\ \ldots \\ {{{u(t)} = {{K_{cM}{e(t)}} + {100\left\lbrack {{a{\sum\limits_{j = 1}^{N}\;{{h_{j}(n)}{q_{j}(n)}}}} + b} \right\rbrack}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, . . . , 0≦R_(2M-2)<100, M=3, 4, 5, 6 . . . ; K_(c1), K_(c2), . . . , K_(cM) are the controller gains; e(t) is said error signal; h_(j)(n) is the weighting factor for the jth hidden neuron output; and q_(j)(n) is the jth hidden neuron output.
 33. A 1-input-M-output Proportional-Integral-Derivative (PID) controller for a process having a process output which is controlled by M controller outputs V₁(t), V₂(t), . . . , V_(M)(t) applied to M actuators whose outputs are the inputs of said process, said controller comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a control signal u(t) is, of the form: ${{u(t)} = {K_{p}\left\{ {{e(t)} + {\frac{1}{T_{i}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},$ or equivalent thereof, in which K_(p) is the proportional gain, T_(i) is the integral time, and T_(d) is the derivative time; e(t) is the value of said error input at any given time; and c) a split-range setter arranged to produce from the said control signal the said controller outputs V₁(t), V₂(t), . . . , V_(M)(t).
 34. The controller of claim 33, in which said control signal is of the form: $\begin{matrix} {{{u(t)} = {K_{p1}\left\{ {{e(t)} + {\frac{1}{T_{i1}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d1}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \\ {{{u(t)} = {K_{p2}\left\{ {{e(t)} + {\frac{1}{T_{i2}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{d2}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \\ \ldots \\ {{{u(t)} = {K_{pM}\left\{ {{e(t)} + {\frac{1}{T_{iM}}{\int{{e(t)}{\mathbb{d}t}}}} + {T_{dM}\frac{\mathbb{d}{e(t)}}{\mathbb{d}t}}} \right\}}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} \end{matrix}$ or an equivalent thereof, in which K_(p1), K_(p2), . . . , K_(pM), T_(i1), T_(i2), . . . , T_(iM), T_(d1), T_(d2), . . . , T_(dM) are user-selectable parameters, 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, . . . , 0≦R_(2M-2)<100, M=3, 4, 5, 6 . . . ; and e(t) is said error signal.
 35. The controller of claim 29 or 33, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},\mspace{130mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack}} \\ {{{V_{1}(t)} = 0},\mspace{284mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},\mspace{70mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack}} \\ {{{V_{2}(t)} = 0},\mspace{284mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)}} \\ {{{V_{2}(t)} = 100},\mspace{256mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack}} \\ \ldots \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - R_{{2M} - 2}}{100 - R_{{2M} - 2}}} + 100}},\mspace{14mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} \\ {{{V_{M}(t)} = 100},\mspace{245mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)}} \\ {{{{where}\mspace{14mu} M} = 3},5,7,{\ldots\mspace{11mu};}} \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{{2M} - 2} - 100}} + 100}},\mspace{14mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack}} \\ {{{V_{M}(t)} = 0},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)}} \end{matrix}$ where M=4, 6, 8, . . . ; or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, R₂<R₃, . . . , 0≦R_(2M-2)<100; the signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all having a working rang of 0 to
 100. 36. The controller of claim 29 or 33, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack}} \\ {{{V_{1}(t)} = 100},\mspace{259mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack}} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},\mspace{76mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack}} \\ {{{V_{2}(t)} = 0},\mspace{284mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)}} \\ {{{V_{2}(t)} = 100},\mspace{256mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack}} \\ \ldots \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{{2M} - 2} - 100}} + 100}},\mspace{14mu}{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack}} \\ {{{V_{M}(t)} = 0},{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{{2M} - 2}} \right)}} \end{matrix}$ or equivalent thereof, in which 0<S₁≦100, 0≦S₂<100, 0<S₃≦100, S₂<S₃, . . . , 0≦S_(2M-2)<100, M=3, 4, 5, 6, . . . ; S_(j) being equivalent to R_(j), j=1, 2, 3, 4, . . . ; the signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all having a working range of 0 to
 100. 37. A 1-input-M-output controller for a process having a process output which is controlled by M controller outputs V₁(t), V₂(t), . . . , V_(M)(t) applied to M actuators whose outputs are the inputs of said process, said controller comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a control signal u(t) is of the form: u(t)=ƒ(e(t), t, P ₁ , P ₂ , . . . , P ₁), or equivalent thereof, in which t is time, P₁, P₂, . . . , P₁ are the controller tuning parameters; and e(t) is the value of said error input at any given time. c) a split-range setter arranged to produce from the said control signal the said controller outputs V₁(t), V₂(t), . . . , V_(M)(t).
 38. The controller of claim 37, in which the controller gains P₁₁, P₁₂, P₁₃, . . . , P_(1M) are of the form: $\begin{matrix} {{P_{11} = {K_{1}\frac{R_{1}}{100}}},} \\ {{P_{12} = {K_{2}\frac{R_{3} - R_{2}}{100}}},} \\ {{P_{13} = {K_{3}\frac{R_{5} - R_{4}}{100}}},} \\ {\ldots} \\ {{P_{1M} = {K_{M}\frac{100 - R_{{2M} - 2}}{100}}},} \end{matrix}$ or equivalent thereof, in which M=4, 5, 6, . . . ; R₂<R₃, R₄<R₅, R_(2M-2)<R_(2M-1), and K₁, K₂, K₃, . . . , K_(M) are user-selectable controller gains for the corresponding controller outputs V₁(t), V₂(t), V₃(t), . . . , V_(M)(t), respectively.
 39. The controller of claim 38, in which the controller gains P₁₁, P₁₂, P₁₃, . . . , P_(1M) are of the form: $\begin{matrix} {{P_{1i} = \frac{P_{1,{{2i} - 2}} + P_{1,{{2i} - 3}}}{2}},} \\ {{P_{2i} = \frac{P_{2,{{2i} - 2}} + P_{2,{{2i} - 3}}}{2}},} \\ {\ldots} \\ {{P_{l,i} = \frac{P_{l,{{2i} - 2}} + P_{l,{{2i} - 3}}}{2}},} \end{matrix}$ or an equivalent thereof, in which i=2, 3, 4, . . . , M; u(t) is inside the signal overlap area if the signals V_(i-1)(t) and V_(i)(t) overlap; or u(t) is inside the deadband if a deadband between the signals V_(i-1)(t) and V_(i)(t) exist.
 40. The controller of claim 37, in which said control signal is of the form: u(t)=ƒ(e(t), t, P ₁₁ , P ₂₁ , . . . , P ₁₁), for all u(t)ε[0, R ₁] u(t)=ƒ(e(t), t, P ₁₂ , P ₂₂ , . . . , P ₁₂), for all u(t)ε[R ₂ , R ₃] u(t)=ƒ(e(t), t, P ₁₃ , P ₂₃ , . . . , P ₁₃), for all u(t)ε[R ₄ , R ₅] u(t)=ƒ(e(t), t, P _(1M) , P _(2M) , . . . , P _(1M)), for all u(t)ε[R _(2M-2), 100] or an equivalent thereof, in which P₁₁, P₁₂, . . . , P_(1M), P₂₁, P₂₂, . . . , P_(2M), . . . , P₃₁, P₃₂, . . . , P_(3M), . . . , P₁₁, P₁₂, . . . , P_(1M) are user-selectable parameters, 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, 0≦R₄<100, 0<R₅≦100, R₂<R₃, R₄<R₅, . . . , R_(2M-2)<R_(2M-1), 0≦R_(2M-2)<100, M=4, 5, 6 . . . ; and e(t) is said error signal.
 41. The controller of claim 37, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 0},} & {{{for}\mspace{20mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - R_{3}}{R_{2} - R_{3}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{2},R_{3}} \right\rbrack} \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left\lbrack {0,R_{2}} \right)} \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{3},100} \right\rbrack} \\ {{{V_{3}(t)} = {{{- 100}\frac{{u(t)} - R_{4}}{R_{5} - R_{4}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {R_{4},R_{5}} \right\rbrack} \\ {{{V_{3}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{4}} \right)} \\ {{{V_{3}(t)} = 0},} & {{{for}\mspace{14mu}{all}{\mspace{11mu}\;}{u(t)}} \in \left( {R_{5},100} \right\rbrack} \\ \ldots & \; \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - R_{{2M} - 2}}{100 - R_{{2M} - 2}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} \\ {{{V_{M}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)} \\ {{{{where}\mspace{14mu} M} = 5},7,9,{\ldots\mspace{14mu};}} & \; \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{{2M} - 2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {R_{{2M} - 2},100} \right\rbrack} \\ {{{V_{M}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{11mu}{u(t)}} \in \left\lbrack {0,R_{{2M} - 2}} \right)} \end{matrix}$ where M=4, 6, 8, . . . ; or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<R₃≦100, 0≦R₄<100, 0<R₅≦100, R₂<R₃, R₄<R₅, . . . , 0≦R_(2M-2)<100; the signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all having a working range of 0 to
 100. 42. The controller of claim 37, in which said split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \\ {{{V_{1}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack} \\ {{{V_{2}(t)} = {{{- 100}\frac{{u(t)} - S_{3}}{S_{2} - S_{3}}} + 100}},} & {{{for}\mspace{14mu}{all}{\mspace{14mu}\;}{u(t)}} \in \left\lbrack {S_{2},S_{3}} \right\rbrack} \\ {{{V_{2}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)} \\ {{{V_{2}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {S_{3},100} \right\rbrack} \\ {{{V_{M}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{{2M} - 2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{{2M} - 2},100} \right\rbrack} \\ {{{V_{M}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {0,S_{{2M} - 2}} \right)} \end{matrix}$ or equivalent thereof, in which 0<S₁≦100, 0≦S₂<100, 0<S₃≦100, 0≦S₄<100, 0<S₄<100, 0<S₅≦100, S₂<S₃, S₄<S₅, . . . , 0≦S_(2M-2)<100, M=3, 4, 5, 6, . . . ; the signals u(t), V₁(t), V₂(t), . . . , V_(M)(t) all having a working range of 0 to
 100. 43. The controller of claim 35, 36, 41, or 42, in which said split-range setter includes individual controls that can be set freely within said split range to produce controller outputs V₁(t), V₂(t), . . . , V_(M)(t) that provide a deadband between said controller outputs, an overlap thereof, or a continuum from one to the other.
 44. The controller of claim 29, 33 or 37, in which the controller outputs V₁(t), V₂(t), . . . , V_(M)(t) are re-scalable from the 0 to 100 range to an engineering value range by using a linear function.
 45. The controller of claim 29, 33 or 37, in which the controller outputs V₁(t), V₂(t), . . . , V_(M)(t) are arranged to include selectable control limits or control constraints.
 46. A single-input-multi-output (SIMO) controller for a process having a process output which is controlled by controller outputs V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t) applied to actuators A_(r1), A_(r2), A_(s1) and A_(s2) whose outputs are the inputs of said process, said controller comprising: a) an error input representative of the difference between a predetermined setpoint and said process output; b) a control signal u(t) is of the form: u(t)=ƒ(e(t), t, P ₁ , P ₂ , . . . , P ₁), or equivalent thereof, in which t is time, P₁, P₂, . . . , P₁ are the controller tuning parameters; e(t) is the value of said error input at any given time; c) a combined split-range setter arranged to produce from the said control signal the said controller outputs V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t).
 47. The controller of claim 46, in which said combined split-range setter produces the said controller outputs of the form: $\begin{matrix} {{{V_{r1}(t)} = {{{- 100}\frac{u(t)}{R_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,R_{1}} \right\rbrack} \\ {{{V_{r1}(t)} = 0},} & {{{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left( {R_{1},100} \right\rbrack}\;} \\ {{{V_{r2}(t)} = {{{- 100}\frac{{u(t)} - 100}{R_{2} - 100}} + 100}},} & {{{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {R_{2},100} \right\rbrack}{\mspace{11mu}\mspace{11mu}}} \\ {{{V_{r2}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {0,R_{2}} \right)} \\ {{{V_{s1}(t)} = {{100\frac{{u(t)} - S_{1}}{S_{1}}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left\lbrack {0,S_{1}} \right\rbrack} \\ {{{V_{s1}(t)} = 100},} & {{{for}\mspace{14mu}{all}\mspace{20mu}{u(t)}} \in \left( {S_{1},100} \right\rbrack} \\ {{{V_{s2}(t)} = {{{- 100}\frac{{u(t)} - 100}{S_{2} - 100}} + 100}},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {S_{2},100} \right\rbrack} \\ {{{V_{s2}(t)} = 0},} & {{{for}\mspace{14mu}{all}\mspace{14mu}{u(t)}} \in \left\lbrack {0,S_{2}} \right)} \end{matrix}$ or equivalent thereof, in which 0<R₁≦100, 0≦R₂<100, 0<S₁≦100, 0<S₂<100, the signals u(t), V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t) all having a working range of 0 to
 100. 48. The controller of claim 47, in which said combined split-range setter includes individual controls that can be set freely within said split ranges to produce controller outputs V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t) that provide a deadband between said controller outputs, an overlap thereof, or a continuum from one to the other.
 49. The controller of claim 46, in which the controller outputs V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t) are re-scalable from the 0 to 100 range to an engineering value range by using a linear function.
 50. The controller of claim 46, in which the controller outputs V_(r1)(t), V_(r2)(t), V_(s1)(t), and V_(s2)(t) are arranged to include selectable control limits or control constraints.
 51. The controller of claim 1, 8, 19, 29, 33, 37, or 46, in which said controller is a computer program embodied in a digital medium. 